home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / AIAT / Headers / Accessor / InvertedAccessor.h < prev    next >
Encoding:
Text File  |  1998-04-16  |  4.1 KB  |  138 lines  |  [TEXT/CWIE]

  1. // InvertedAccessor.h
  2. //    Copyright:    © 1994 - 1996-1997 - 1998 by Apple Computer, Inc., all rights reserved.
  3. // Implements ExactSearch and RankedSearch over InvertedIndices
  4.  
  5. #pragma once
  6. #ifndef InvertedAccessor_h
  7. #define InvertedAccessor_h
  8.  
  9. #pragma import on
  10. #if PRAGMA_STRUCT_ALIGN
  11.     #pragma options align=power
  12. #endif
  13.  
  14. #include "RankedAccessor.h"
  15.  
  16. #pragma IA_BEGIN_EXPORTS
  17.  
  18. // classes needed for private method declarations
  19. class InvertedIndex;
  20. class RankedQuery;
  21. class Similarity;
  22. class InvertedHitQueue;
  23. class Progress;
  24. class IAQuery;
  25. class IABooleanQuery;
  26.  
  27.  
  28. const uint32 InvertedAccessorType = 'Inv0';
  29.  
  30. class InvertedAccessor : public virtual RankedAccessor {
  31. public:
  32.         InvertedAccessor(InvertedIndex** indices, uint32 indexCount, uint32 t = InvertedAccessorType);
  33.         ~InvertedAccessor();
  34.  
  35.     uint32        RankedSearch(byte*                     textQuery,     uint32     textQueryLen,
  36.                              RankedQueryDoc*         docQuery,     uint32     docQueryLen,
  37.                              RankedHit**            results,    uint32    resultLen,
  38.                              uint32                    matchingTermsLen,
  39.                              RankedProgressFn*        progressFn,
  40.                              clock_t                progressFreq,
  41.                              void*                    appData);
  42.                              
  43.     uint32        RankedSearch(IADocText*             textQuery,
  44.                              RankedQueryDoc*         docQuery,     uint32     docQueryLen,
  45.                              RankedHit**            results,    uint32    resultLen,
  46.                              uint32                    matchingTermsLen,
  47.                              RankedProgressFn*        progressFn,
  48.                              clock_t                progressFreq,
  49.                              void*                    appData);
  50.  
  51.     uint32        RankedSearchBoolean(byte*            text,        uint32     textLen,
  52.                                  RankedHit**            results,    uint32    resultLen,
  53.                                  RankedProgressFn*    progressFn,
  54.                                  clock_t                progressFreq,
  55.                                 void*                appData);
  56.  
  57.     void         SetBooleanAndOperator(UInt16 andOp = '&');
  58.     void         SetBooleanOrOperator(UInt16 orOp = '|');
  59.     void         SetBooleanNotOperator(UInt16 notOp = '!');
  60.     void         SetBooleanLeftFence(UInt16 leftfence = '\(');  
  61.     void         SetBooleanRightFence(UInt16 rightfence = '\)'); 
  62.  
  63.     UInt16         GetBooleanAndOperator() const;
  64.     UInt16         GetBooleanOrOperator() const;
  65.     UInt16         GetBooleanNotOperator() const;
  66.     UInt16         GetBooleanLeftFence() const;  
  67.     UInt16         GetBooleanRightFence() const; 
  68.  
  69. protected:
  70.     void        Initializing();
  71.  
  72.     IABlockSize    InitsSize();
  73.     void        StoringInits(IAOutputBlock* output);
  74.     void        RestoringInits(IAInputBlock* input);
  75.     void        UpdatingInits(IAInputBlock* input);
  76.     void        ExtendingInits();
  77.  
  78.     TermFreq    TrimmedQuerySize(TermFreq querySize);
  79.     uint32        RankedSearchIndices(IAQuery* query, Progress* prog,
  80.                                     RankedHit** results, uint32 resultLen, uint32 nTerms);
  81.  
  82.     void         TrimRankedQuery(IAQuery* query);
  83.     bool        RankedSearchIndex(uint32 i, IAQuery* query,
  84.                                   Progress* prog, InvertedHitQueue* hitQueue,
  85.                                   uint32 resultLen, uint32 nTerms);
  86.  
  87.     byte**        GetDocNorms() const;
  88.  
  89.     uint32        RankSearchBooleanIndices ( Progress* prog, RankedHit** results, uint32 resultLen);
  90.     void         RankedSearchBooleanIndex(uint32 i, Progress* prog, InvertedHitQueue* hitQueue, uint32 resultLen);
  91.     void        PutAway(DocID docID, uint32 i, float sum, uint32 headcnt, InvertedHitQueue* hitQueue, uint32 resultLen, Progress* prog);
  92.     
  93.     uint32        GetInvertedRankedQueryMinTerms () const {return InvertedRankedQueryMinTerms;}
  94.     uint32        GetInvertedRankedQueryMaxTerms () const {return InvertedRankedQueryMaxTerms;}
  95.     
  96.     void        SetInvertedRankedQueryMinTerms (uint32 minValue = 10) {InvertedRankedQueryMinTerms = minValue;}
  97.     void        SetInvertedRankedQueryMaxTerms (uint32 maxValue = 50) {InvertedRankedQueryMaxTerms = maxValue;}
  98.  
  99.  
  100. private:
  101.  
  102.     friend class IABooleanQueryTermNode;
  103.     byte**        docNorms;
  104.     IAIndex**    UpcastIndices(InvertedIndex** is, uint32 c);
  105.                 InvertedAccessor(InvertedAccessor&);
  106.     float        fAveNormalization;
  107.     uint32        fTotalDocs;
  108.     uint32        fTotalNorm;
  109.     
  110.     /// query trimming speeds large queries by discarding low-scoring terms
  111.     uint32 InvertedRankedQueryMinTerms;
  112.     uint32 InvertedRankedQueryMaxTerms;
  113.  
  114.     
  115.     IABooleanQuery*    fBoolquery;
  116.     
  117.         // data members to support update operation;
  118.     DocID*    fOldNumberOfDocs;
  119.     DocID*    fNewNumberOfDocs;
  120.  
  121. };
  122.  
  123. inline byte**    InvertedAccessor::GetDocNorms() const
  124. {
  125.     return docNorms;
  126. }
  127.  
  128. IAExceptionCode            IAAccessorInvalidQuery = 'VAIQ';
  129.  
  130. #pragma IA_END_EXPORTS
  131.  
  132. #if PRAGMA_STRUCT_ALIGN
  133.     #pragma options align=reset
  134. #endif
  135.  
  136. #pragma import reset
  137. #endif
  138.